function debounce (fn, delay) {
  let timer = null
  return function () {
    clearTimeout(timer)
    timer = setTimeout(() => {
      fn.apply(this, arguments)
    }, delay);
  }
}

// 1. 基础功能测试：是否延迟执行？
const delayedFn = debounce(() => {
  console.log('输出一个就好');
}, 1000)

// 模拟连续触发
delayedFn()
delayedFn()
delayedFn()
delayedFn()
delayedFn()
delayedFn()
delayedFn()
delayedFn()
// 预期：1000ms 后输出一次 "计数: 1"